package TOP_Version1;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

public class Top_StudentRead {
	static Top_JDBC_SQL topsql = new Top_JDBC_SQL();
	static StringBuilder sb = new StringBuilder();
	static Scanner sc = new Scanner(System.in);
	static String[] smt = { "순번", "학번", "이름", "연락처", "주소", "학과", "등록일자" };
	static Connection conn = null;
	static PreparedStatement pstmt = null;
	static ResultSet rs = null;
	static String add = null;
	static boolean b = true;
	static String logId = Top_LoginMain.logIdVO;
	
	protected static void readStudent() {
		sb.append("\n*** 학생 정보 검색 ***").append("\n[ 01 ] 학생 전체 검색").append("\n[ 02 ] 학생 번호 검색")
		.append("\n[ 03 ] 학생 이름 검색").append("\n[ 08 ] 상위 메뉴로 이동")
		.append("\n[ 09 ] 로그 아웃").append("\n[ 00 ] 시스템 종료");
		System.out.println(sb);
		while ( b ) {
			System.out.print("수행하실 업무를 선택하세요 : ");
			switch ( sc.next() ) {
			case "1" : case "01" :
				sb = new StringBuilder();
				StudentFindAll();
				b = false; break;
			case "2" : case "02" :
				sb = new StringBuilder();
				StudentFindNo();
				b = false; break;
			case "3" : case "03" :
				sb = new StringBuilder();
				StudentFindName();
				b = false; break;
			case "8" : case "08" :
				System.out.println("학생 관련 업무 화면으로 이동합니다.");
				sb = new StringBuilder();
				Top_StudentMain.Top_StudentAdminScreen();
			case "9" : case "09" :
				System.out.println("사용자 접속을 종료합니다. 이용해 주셔서 감사합니다.");
				sb = new StringBuilder();
				logId = null;
				b = false; break;
			case "0" : case "00" :
				System.out.println("시스템을 종료합니다. 이용해 주셔서 감사합니다.");
				System.exit(0);
			default : 
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
	}
	protected static void StudentFindAll() {
		try {
			conn = Top_JDBC_Connection.openDataBase();
			pstmt = conn.prepareStatement(topsql.StudentSelectAll1SQL);
			rs = pstmt.executeQuery();
			sb.append(String.format("%-3s", smt[0])).append(String.format("%-8s", smt[1]))
			.append(String.format("%-6s", smt[2])).append(String.format("%-15s", smt[3]))
			.append(String.format("%-30s", smt[4])).append(String.format("%-10s", smt[5]))
			.append(String.format("%-20s", smt[6]));
			int count = 1;
			while ( rs.next() ) {
				sb.append(String.format("%-3s", count++)).append(String.format("%-8s", rs.getString(1)))
				.append(String.format("%-6s", rs.getString(2))).append(String.format("%-15s", rs.getString(3)))
				.append(String.format("%-30s", rs.getString(4))).append(String.format("%-10s", rs.getString(5)))
				.append(String.format("%-20s", rs.getString(6)));
			}
			System.out.println( sb.toString() );
			System.out.println("계속 진행하시려면 [ ENTER KEY ] 를 입력하세요.");
			System.in.read();
			System.in.read();
			System.out.println("학생 정보 검색 화면으로 이동합니다.");
			readStudent();
		} catch ( Exception e ) {
			e.printStackTrace();
		} finally {
			Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
		}
	}
	protected static void StudentFindNo() {
		while ( b ) {
			System.out.print("조회하실 학생 번호를 입력하세요 : ");
			add = sc.next();
			try {
				conn = Top_JDBC_Connection.openDataBase();
				pstmt = conn.prepareStatement(topsql.StudentSelectNoSQL);
				pstmt.setString( 1, add );
				rs = pstmt.executeQuery();
				if ( rs.next() ) {
					sb.append(String.format("%-3s", smt[0])).append(String.format("%-8s", smt[1]))
					.append(String.format("%-6s", smt[2])).append(String.format("%-15s", smt[3]))
					.append(String.format("%-30s", smt[4])).append(String.format("%-10s", smt[5]))
					.append(String.format("%-20s", smt[6]));
					int count = 1;
					do {
						sb.append(String.format("%-3s", count++)).append(String.format("%-8s", rs.getString(1)))
						.append(String.format("%-6s", rs.getString(2))).append(String.format("%-15s", rs.getString(3)))
						.append(String.format("%-30s", rs.getString(4))).append(String.format("%-10s", rs.getString(5)))
						.append(String.format("%-20s", rs.getString(6)));
					} while ( rs.next() );
					System.out.println( sb.toString() );
					System.out.println("계속 진행하시려면 [ ENTER KEY ] 를 입력하세요.");
					System.in.read();
					System.in.read();
					System.out.println("학생 정보 검색 화면으로 이동합니다.");
					readStudent();
				} else { System.out.println("존재하지 않는 학생 번호입니다. 다시 확인해 주세요"); }
			} catch ( Exception e ) {
				e.printStackTrace();
			} finally {
				Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
			}
		}
	}
	protected static void StudentFindName() {
		while ( b ) {
			System.out.print("조회하실 학생 이름을 입력하세요 : ");
			add = sc.next();
			try {
				conn = Top_JDBC_Connection.openDataBase();
				pstmt = conn.prepareStatement(topsql.StudentSelectNameSQL);
				pstmt.setString( 1, add );
				rs = pstmt.executeQuery();
				if ( rs.next() ) {
					sb.append(String.format("%-3s", smt[0])).append(String.format("%-8s", smt[1]))
					.append(String.format("%-6s", smt[2])).append(String.format("%-15s", smt[3]))
					.append(String.format("%-30s", smt[4])).append(String.format("%-10s", smt[5]))
					.append(String.format("%-20s", smt[6]));
					int count = 1;
					do {
						sb.append(String.format("%-3s", count++)).append(String.format("%-8s", rs.getString(1)))
						.append(String.format("%-6s", rs.getString(2))).append(String.format("%-15s", rs.getString(3)))
						.append(String.format("%-30s", rs.getString(4))).append(String.format("%-10s", rs.getString(5)))
						.append(String.format("%-20s", rs.getString(6)));
					} while ( rs.next() );
					System.out.println( sb.toString() );
					System.out.println("계속 진행하시려면 [ ENTER KEY ] 를 입력하세요.");
					System.in.read();
					System.in.read();
					System.out.println("학생 정보 검색 화면으로 이동합니다.");
					readStudent();
				} else { System.out.println("존재하지 않는 학생 이름입니다."); }
			} catch ( Exception e ) {
				e.printStackTrace();
			} finally {
				Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
			}
		}
	}
}